//
//  HMTabBar.swift
//  swift-新浪微博0
//
//  Created by 赵玉忠 on 16/8/29.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

class HMTabBar: UITabBar {
    
    // 定义一个闭包的属性
    var composeButtonClosure: (()->())?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }
    

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func setupUI() {
        backgroundImage = #imageLiteral(resourceName: "tabbar_background")
        addSubview(composeButton)
    }
    
    override func layoutSubviews() {
        // 一定要写 super
        super.layoutSubviews()
        
        // 调整composeButton的位置
        composeButton.center = CGPoint(x: self.frame.width * 0.5, y: self.frame.height * 0.5)
        
        // 每一个条目的宽度
        let itemW = UIScreen.main.bounds.width / 5
        // 定义一个当前遍历到按钮的索引
        var index = 0
        
        for subView in self.subviews {
            
            // 要判断 subView 的类型是否是  UITabBarButton
            if subView.isKind(of: NSClassFromString("UITabBarButton")!) {
                print(subView)
                
                // 计算x值
                let itemX = CGFloat(index) * itemW
                // 调整宽度
                subView.frame.size.width = itemW
                // 调整x值
                subView.frame.origin.x = itemX
                
                // 自增
                index = index + 1
                // 如果是发现按钮，再往右移动一个位置
                if index == 2 {
                    index = index + 1
                }
            }
        }
    }
    
    // MARK: - 监听事件
    // 在 Xcode 7中，如果不添加 @objc 可以编译成功，但是运行的时候会提示：不识别xx方法
    @objc private func composeButtonClick() {
        // print("撰写按钮点击了！！")
        // 要执行一个闭包
        composeButtonClosure?()
    }
    
    // MARK: - 懒加载控件
    lazy var composeButton: UIButton = {
        let button = UIButton()
        
        // 添加点击事件
        button.addTarget(self, action: #selector(composeButtonClick), for: .touchUpInside)
        
        // 设置按钮的图标
        button.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add"), for: UIControlState.normal)
        button.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add_highlighted"), for: UIControlState.highlighted)
        // 设置按钮的背景图片
        button.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button"), for: UIControlState.normal)
        button.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button_highlighted"), for: UIControlState.highlighted)
        // 设置按钮的大小
        button.sizeToFit()
        
        return button
    }()
}
